package support;

public class Trigonometria {
    
    public static Ponto cross_lines( Ponto p1, double angle1, Ponto p2, double angle2 ){
        Reta a = new Reta();
        Reta b = new Reta();
        
        a.set_ponto( p1.get_x(), p1.get_y() );
        b.set_ponto( p2.get_x(), p2.get_y() );
        
        a.set_direction(angle1);
        b.set_direction(angle2);
        
        return cross_lines(a, b);
    }
    
    public static Ponto minus( Ponto p1, Ponto p2 ){
        
        Ponto ret = new Ponto();
        
        ret.set_x( p1.get_x() - p2.get_x() );
        ret.set_y( p1.get_y() - p2.get_y() );
        
        return ret;
        
    }
    
    public static Ponto sum( Ponto p1, Ponto p2 ){
        
        Ponto ret = new Ponto();
        
        ret.set_x( p1.get_x() + p2.get_x() );
        ret.set_y( p1.get_y() + p2.get_y() );
        
        return ret;
        
    }
    
    public static Ponto multiply( Ponto p1, double t ){
        
        Ponto ret = new Ponto();
        
        ret.set_x( p1.get_x() * t );
        ret.set_y( p1.get_y() * t );
        
        return ret;
        
    }
    
    private static double get_parameter( Reta a, Reta b ){
        return ( a.get_ponto().get_x() - b.get_ponto().get_x() ) / ( b.get_direction().get_x() - a.get_direction().get_x() );
    }
    
    private static Ponto cross_lines( Reta a, Reta b ){
        return sum( a.get_ponto(), multiply( a.get_direction(), get_parameter(a, b) ) );
    }
    
}
